//package com.xiao.message.service;
//
//import com.xiao.foundation.errors.BadRequestAlertException;
//import com.xiao.message.service.dto.SmsCaptchaDTO;
//import com.xiao.message.service.handler.CaptchaMsgHandlerHelper;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.amqp.AmqpException;
//import org.springframework.data.redis.core.StringRedisTemplate;
//import org.springframework.stereotype.Service;
//import org.springframework.util.StringUtils;
//
//import java.util.Optional;
//
//@Service
//@Slf4j
//public class SmsDispatcherService {
//
//    private CaptchaMsgHandlerHelper captchaMsgHandlerHelper;
//    private StringRedisTemplate stringRedisTemplate;
//
//    SmsDispatcherService(CaptchaMsgHandlerHelper captchaMsgHandlerHelper, StringRedisTemplate stringRedisTemplate) {
//        this.captchaMsgHandlerHelper = captchaMsgHandlerHelper;
//        this.stringRedisTemplate = stringRedisTemplate;
//    }
//
//    public boolean sendCaptchaMsg(SmsCaptchaDTO smsCaptchaDTO) throws Exception{
//        return captchaMsgHandlerHelper.sendCaptcha(smsCaptchaDTO);
//    }
//
//    public Optional<SmsCaptchaDTO> buildSmsCaptcha(String phone) throws BadRequestAlertException {
//        SmsCaptchaDTO smsCaptchaDTO = null;
//        try {
//            smsCaptchaDTO = captchaMsgHandlerHelper.buildCaptcha(phone);
//        } catch (AmqpException e) {
//            log.error("验证码推送MQ失败! {}", e);
//            throw new BadRequestAlertException("验证码短信构造失败!", "sms", smsCaptchaDTO.getId());
//        }
//        return Optional.of(smsCaptchaDTO);
//    }
//
//    public Boolean valiadCaptcha(SmsCaptchaDTO smsCaptchaDTO) {
//        String redisKey = String.format("message:sms:captcha:%s", smsCaptchaDTO.getId());
//        String value = (String) stringRedisTemplate.opsForValue().get(redisKey);
//        return StringUtils.hasText(value)
//                && StringUtils.hasText(smsCaptchaDTO.getCode())
//                && smsCaptchaDTO.getCode().equalsIgnoreCase(value);
//    }
//}
